method StreamClass.prototype.[Symbol.asyncIterator] Private StreamClass.prototype.[Symbol.asyncIterator](): AsyncIterator<T | E> Streams are for await-able; elements arrive bare (T | E), so a hand-rolled loop discriminates with Failure.is exactly like any other union consumer. const seen: number[] = []; for await (const element of Stream.from([1, 2])) seen.push(element); seen; // [1, 2] Return Type AsyncIterator<T | E>